package com.cyys.common.thirdInterface.bd;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.cyys.common.ql.AR;
import com.cyys.common.thirdInterface.HttpUtil;


public class SpamUtil {
	/**
	 * 恶意内容审核
	 * @param text 待审核文本字符串
	 * @return
	 */
	public static AR checkText(String text) {
		// 获取token地址
		String authHost = "https://aip.baidubce.com/rest/2.0/solution/v1/text_censor/v2/user_defined?";
		String accessToken = AuthUtil.getAuth();
		if (accessToken == null) {
			return AR.failed("接口验证token失败。");
		}
		String getAccessTokenUrl = authHost + "access_token=" + accessToken;

		String body = "text=" + text; // + "&command_no=500071";

		JSONObject jsonObject = HttpUtil.httpsRequestBd(getAccessTokenUrl, "POST", body);

		if (null != jsonObject) {
			if(jsonObject.get("error_code") != null){
				return AR.failed((String)jsonObject.get("error_msg"));
			}
			JSONObject result = (JSONObject) jsonObject.get("result");
			Integer conclusionType = (Integer)result.get("conclusionType");
			JSONArray dataArray = (JSONArray) jsonObject.get("data");

			if(conclusionType == 1){  //验证成功
				return AR.ok("验证成功");
			}else if(conclusionType == 2){
				String spamString = "";
				for (int i=0;i<dataArray.size();i++){
					JSONObject data = dataArray.getJSONObject(i);
					JSONArray hitsArray = data.getJSONArray("hits");
					for (int j=0;j<hitsArray.size();j++){
						JSONObject hits = hitsArray.getJSONObject(i);
						spamString += data.getString("words") + " ";
					}
				}
				return AR.failed(spamString + "等字符非法。");
			}else if(conclusionType == 3){
				return AR.failed("含有非法字符");
			}else if(conclusionType == 4){
				return AR.failed("文本审核失败");
			}
		}
		return AR.failed("接口调用失败");
	}

	/**
	 * 恶意图片审核
	 * @param image 待审核图像Base64编码字符串，
	 * 以图像文件形式请求时必填，
	 * 图像要求base64后
	 * 大于等于5kb，小于等于4M，
	 * 最短边大于等于128像素，
	 * 小于等于4096像素，
	 * 支持的图片格式：PNG、JPG、JPEG、BMP、GIF（仅对首帧进行审核）、Webp、TIFF
	 * @param imgUrl 图像URL地址，
	 * 以URL形式请求，
	 * 图像Url需要做UrlEncode，
	 * 图像要求base64后大于等于5kb，
	 * 小于等于4M，
	 * 最短边大于等于128像素，
	 * 小于等于4096像素
	 * 支持的图片格式：PNG、JPG、JPEG、BMP、GIF（仅对首帧进行审核）、Webp、TIFF
	 * @param imgType 图片类型0:静态图片（PNG、JPG、JPEG、BMP、GIF（仅对首帧进行审核）、Webp、TIFF），1:GIF动态图片
	 * @return
	 */
	public static AR checkImg(String image,String imgUrl,String imgType) {
		// 获取token地址
		String authHost = "https://aip.baidubce.com/rest/2.0/solution/v1/img_censor/v2/user_defined?";
		String accessToken = AuthUtil.getAuth();
		if (accessToken == null) {
			return AR.failed("接口验证token失败。");
		}
		String getAccessTokenUrl = authHost + "access_token=" + accessToken;

		String body = "image=" + image + "&imgUrl=" + imgUrl + "&imgType=" + imgType;

		JSONObject jsonObject = HttpUtil.httpsRequestBd(getAccessTokenUrl, "POST", body);

		if (null != jsonObject) {
			if(jsonObject.get("error_code") != null){
				return AR.failed((String)jsonObject.get("error_msg"));
			}
			JSONObject result = (JSONObject) jsonObject.get("result");
			Integer conclusionType = (Integer)result.get("conclusionType");
			if(conclusionType == 1){  //验证成功
				return AR.ok("验证成功");
			}else if(conclusionType == 2){
				return AR.failed("含有非法元素，请重新上传图片。");
			}else if(conclusionType == 3){
				return AR.failed("含有非法元素，请重新上传图片。");
			}else if(conclusionType == 4){
				return AR.failed("图像审核失败，请重新上传图片。");
			}
		}
		return AR.failed("接口调用失败");
	}

	public static void main(String[] args) {
		AR aj = SpamUtil.checkText("旅游发改委");
		System.out.println(aj.getMsg());
	}
}
